Most data communications between two data processing systems involve a request for data and a response containing the requested data. For example, a client data processing system requests data by sending a request message using HyperText Transfer Protocol (http or HTTP) to a server data processing system. The server sends, using http, a response message containing the data to the client.
An underlying assumption in such data communications is that the data network over which the messages are communicated will remain available throughout the message exchange. When a client requests data and the network changes or becomes unavailable, the client has to re-request the data by sending another request.
Users are well aware of such situations in mobile environments. For example, assume that an application executing on a mobile device requests data from a server over the mobile network while the mobile device is moving through the mobile network. While the application is awaiting the data, the mobile network connectivity may be lost due to weak or absent signal in some areas, the network parameters may change as the device transits from one mobile network to another network, or some other change or transiency in the data connectivity may occur in the network causing the device to temporarily become unable to receive a response to the request for data.
When the mobile device regains connectivity to a data network, the application does not simply begin receiving the data that was requested before the transiency of the data connectivity was experienced. One example reason why this may occur is because the response may be discarded when the time between the request and the response exceeds certain thresholds. The application may therefore have to re-request the data and obtain the response without losing the network connectivity.
Furthermore, from a server's point of view, managing the requests from numerous clients is also problematic under such transient network circumstances. Often a server has to duplicate the work to regenerate the requested data, reproduce the response, or both, when request retransmissions occur due to disruptions in network connectivity.
Under some circumstances, the requesting application, the client data processing system, or both may no longer be available to receive the requested data. Under such circumstances, the requested data lingers at the server or elsewhere in the data network.